iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
自我挑戰組

從0 到 50 初探 如何使用Django 架構出一個網站系列 第 14

Day-14 - Tags - 利用app_name 建立到其他頁面的連結

  • 分享至 

  • xImage
  •  

前言

我們昨天講了tag的一些常見用法。今天來說明Tag如何反向連結到template 其他頁面的方法。

app_name 與 {% url %}

首先我們要用django的保留字app_name來進行命名。
通常都會用我們app的名字,接著我們就能使用{% url %}來呼叫app裡的HTML。
使用方法如下
首先先將app_name命名好,並在urls.py裡將path裡的頁面命名,接著到HTML裡面使用,有兩種方法可以使用。

urls.py

from django.urls import path                                        
from . import views

app_name = "app"

urlpatterns = [
   path("first/", views.first, name = "first_page"),
   path("second/", views.second, name = "second_page")
]

views.py

...

def first(request):
    return render(request, "Django_app/First_page.html")


def second(request):
    nowtime = datetime.datetime.now()
    all ={"Date":nowtime}
    return render(request, "Django_app/Second_page.html", context = all )

第一種方法

First_page.html

第一種方法是使用{%url 'app_name名稱: HTML名稱 ' %}即可。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>First page</h1>
    <h1><a href = "{% url 'app:second_page' %}">Second page</h1>
</body>
</html>

第二種方法

Second_page.html

第二種就是很簡單的直接給他網址。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Second page</h1> 
    <p>My name is {{Name | capfirst}}</p>
    <p>I am {{Num | add:"2"}} years old</p>
    <h2><a href = "http://127.0.0.1:8000/hello/first/">First Page</a></h1>
</body>
</html>

First page 呈現畫面

https://ithelp.ithome.com.tw/upload/images/20220923/20150927f0FWykwpUP.png

Second page 呈現畫面

https://ithelp.ithome.com.tw/upload/images/20220923/20150927Jqw0nEwnPX.png

參考資料&推薦閱讀

https://docs.djangoproject.com/en/4.1/topics/http/urls/#reversing-namespaced-urls


上一篇
Day-13 - The Django template language - Tag
下一篇
Day-15 - The Django template language - Filter
系列文
從0 到 50 初探 如何使用Django 架構出一個網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言